The present disclosure generally relates to cloud computing, and more specifically, to techniques for managing virtual machine (VM) images in different cloud computing environments as a single VM image.
Many large enterprises (e.g., companies, organizations, etc.) generally employ several cloud environments spread all over the world to support enterprise operations. In addition, enterprises can use each cloud environment for different purposes (e.g., in order to satisfy different requirements). For example, an enterprise can deploy different workloads across multiple Infrastructure-as-a-Service (IaaS) cloud computing environments, deploy a single workload that is load balanced across multiple IaaS cloud computing environments, deploy a single workload to one IaaS cloud computing environment and use other IaaS cloud computing environments as backup, etc.
In many cloud computing environments (e.g., IaaS cloud computing environments), an enterprise can provide its own virtual machine (VM) images for deployment into the cloud service provider's environment. When deployed, the virtual machine image runs on physical hardware in a multi-tenant environment, e.g., an environment of multiple physical host machines where each physical host may house one or more virtual machines. The cloud service provider determines the placement of each virtual machine. That is, the cloud service provider selects a host on which to launch the virtual machine image.
To limit image sprawling, enterprises generally use similar virtual machine images in each cloud computing environment. For example, an enterprise administrator can copy the same virtual machine image in each cloud computing environment and deploy instances from the copy of the virtual machine image. Such attempts, however, can still lead to image sprawling. For example, once instances (e.g., virtual machines) are deployed in each cloud computing environment from a single virtual machine image, the instances can quickly diverge in a short amount of time, e.g., as a result of users installing software, modifying the original configuration, etc.
As a result, administrators (and other IT personnel) are often faced with maintaining an ever increasing number of virtual machines and images in each cloud computing environment. For example, whenever the administrator has to apply a patch or other software update, the administrator generally verifies, for each instance, whether the patch is applicable for that instance. Doing so, however, for such a large number of instances among different cloud computing environments can be extremely complex and burdensome to administrators of an enterprise.